﻿#ifndef FILECOPYCTRL_H
#define FILECOPYCTRL_H

/*******************************************************************************
** 文件拷贝控制器
**
**
*******************************************************************************/

#include <QObject>
#include <QSharedPointer>
#include <QMutex>
#include <QThread>

#include "FileCopyWorker.h"

class FileCopyCtrl : public QObject
{
    Q_OBJECT
public:
    explicit FileCopyCtrl(QObject *parent = 0);
    ~FileCopyCtrl();

    // 添加处理任务
    void addCopyTask(QSharedPointer<FileCopyWorker::CopyTask> task);

    // 停止所有任务
    void stopAll();

private:
    // 尝试启动执行任务
    void tryStartNewTask();

private:
    // 任务队列
    QList<QSharedPointer<FileCopyWorker::CopyTask> > m_task_queue;

    // 队列锁
    QMutex m_mutex;

    // 执行工人
    FileCopyWorker m_worker;

    // 执行线程
    QThread m_exec_thread;
};

#endif // FILECOPYCTRL_H
